Technical Field
The present invention relates to an obfuscation assisting apparatus which assists obfuscation of a computer program in order to prevent unauthorized analysis and manipulation of the computer program that is to be executed.
Background Art
Software applications often contain certain features that are critical in ensuring that the application can be deployed and used according to the developer's business plans. For instance, for many years dongle-like devices have been used to attempt to enforce software licensing schemes, and recently software-based Digital Rights Management (DRM) schemes have been used to attempt to ensure digital contents such as music, video and written words are experienced by the consumer according to the contents licensing schemes. It is necessary that the algorithms that implement these features are robust against attacks from hackers. As such, a number of methods of code obfuscation for programs have been proposed and many made into commercial products (see for example, Non-patent Reference 1: Christian Collberg, Clark Thomborson, and Douglas Low. A taxonomy of obfuscating transformations. Technical Report 148, Department of Computer Science, University of Auckland, July 1997 (http://www.cs.auckland.ac.nz/˜collberg/Research/Publications/CollbergThomborsonLow97a.http://citeseer.ist.psu.edu/collberg97taxonomy.html)). Here, code obfuscation method refers to a transformation method of basically rewriting code such that it is difficult to understand and alter.
It is difficult to generate sufficiently-obfuscated codes in a single attempt. Therefore, it necessary to tune the parameters that control the obfuscation process in order to generate sufficiently-obfuscated codes. However, this tuning is cumbersome work, because the user cannot easily recognize whether or not the tuning made the obfuscation better without running the codes and analyzing the result.
In other words, the conventional obfuscation assisting apparatus analyzes the result of executing an object code of which the source code has been obfuscated and then compiled, and presents the analysis result to the user. Then, the obfuscation assisting apparatus tunes the aforementioned parameters in response to an operation by the user. When the tuning of the parameters is executed in this manner, the source code is re-obfuscated according to the tuned parameters.
Furthermore, compiler and debugger programs, and so on are also proposed (see for example, Non-patent Reference 2: Steven S. Muchnick. Advanced Compiler Design and Implementation. Morgan Kaufmann Publishers, 1997, and Non-patent Reference 3: A. V. Aho, R. Sethi & J. Ullman, Compilers, Principles, Techniques and Tools, Addison Wellsey, 1986, as well as Patent Reference 1: U.S. Pat. No. 5,371,747).
The aforementioned Patent Reference 1 discloses a method for assisting the debugging of optimized code by displaying information on which lines of code have already been executed. In this method, source codes and corresponding machine language codes are displayed by showing the relationship between them. However, although Patent Reference 1 focuses on some of the issues surrounding the debugging of machine language codes, there are some additional requirements that are needed in order to fully evaluate the quality of a transformation.